// 函数

// 声明：
// 1.
export const fn = function () {};
// 2.
function fnn() {}

// 要求封装一个函数， 实现两个数字的和
const sum = (a: number, b: number): number => {
  return a + b;
};

const result1 = sum(1, 2);
console.log(result1);

// 要求封装一个函数， 实现不定个数 数字的和
const sunFn = (...arr: number[]): number => {
  // 求和
  // arr  [1,2,3,4,5]
  // 方式二
  return arr.reduce((p, n) => {
    return p + n;
  }, 0);
  // 两个参数
  // p  n         return
  // 0  1            1
  // 1  2            3
  // 3  3            6
  // 6  4            10
  // 10 5            15

  // 一个参数
  // p  n         return
  // 1  2            3
  // 3  3            6
  // 6  4            10
  // 10 5            15

  // 方式一
  // let result = 0;

  // arr.forEach((v) => {
  //   result += v;
  // });

  // return result;
};

console.log(sunFn(1, 2, 3, 4, 5));

console.log(sunFn(1, 3, 5, 7, 9));
// 等差列表： (首项 + 末相) * 项目 / 2;

// 封装函数， 接受字符串类型的数组，返回数组的最长的字符串的信息

const findLongStr = (arr: string[]) => {
  return arr.reduce((p, n) => {
    return p.length > n.length ? p : n
  })
}


//  p           n                return 
// 'abc'         'qweqewq'        'qweqewq'
// 'qweqewq'  'ergfawd'          'ergfawd'
// 'ergfawd'  's1werqeqewqewq'     's1werqeqewqewq'
const s1 = findLongStr(['abc', 'qweqewq', 'ergfawd', 's1werqeqewqewq'])
const s2 = findLongStr(['abc', 'qweqewq', 's2ergfa1231231231231wd', 'werqeqewqewq'])
const s3 = findLongStr(['s3a1231231321bc', 'qweqewq', 'ergfawd', 'werqeqewqewq'])

console.log(s1, s2, s3)